echo -off
# Tempo em minutos que os dados associados no servidor via HTTP
# ficarão disponíveis em cache
set -v EXPIRACAO_CACHE_SERVIDOR 10

echo "Startup.nsh - O diretorio Drive sera o %cwd%"
set -v dir %cwd%
echo "Startup.nsh - Localizando Drive..."
for %b in FS5 FS4 FS3 FS2 FS1 FS0
	if "%b:\" == "%dir%" then
		set -v Drive %b
		color yellow
		echo %Drive%
		color
		goto Set_Python
	endif
endfor
color red
echo "Startup.nsh - ERRO!"
echo "Startup.nsh - Nao encontrado o arquivo!"
color
pause -q
exit 1

# Localização padrão é CWB. O script NS.py irá configurar para a localização correta
# baseado no valor do NS
set -v LOCATION CWB

:Set_Python
# ATENCAO - PYTHONPATH precisa ser maiuscula (UPERCASE), senao nao funciona... coisa de amador...
set -v PYTHONPATH %Drive%:/EFI/StdLib/lib/python.27
echo "Startup.nsh - Python esta setado em %PYTHONPATH%"
set -v PYTHON python_%ARCH%.efi
echo "Arquitetura: %ARCH%"

echo "Startup.nsh - Alterando diretorio atual para o diretorio EFI\Tools\"
%Drive%:
cd \
cd %Drive%:\EFI\Tools\

echo "Startup.nsh - Criando ramdisk de 128MB para os arquivos de BIOS"
ramdisk 128
set -v Drive_BIOS ramdisk0

if "%NetworkBoot%" eq "1" then
	echo "Startup.nsh - Processo via rede ? SIM"
	
	# Comando httpget configura a rede...
	#echo "Startup.nsh - Configurando a rede ETH0."
	#ifconfig -s eth0 dhcp
	GetMAC.nsh
	if "%MAC%" eq "" then
		exit 1
	endif
	
	echo "Startup.nsh - Verificando servidor %PXEServer% por um NS associado a este MAC"
	
	# conecta na aplicação HttpDynBootBridge ao serviço de dicionário para consultar se há um valor 
	# associado à chave %MAC%_NS e se tiver salva na variável NSdoMAC
	httpget "http://%PXEServer%/HttpDynBootBridge/api/Dictionary/%MAC%_NS/" "var:NSdoMAC"
	
	if %lasterror% eq 0 then
		echo "Startup.nsh - O NS %NSdoMAC% esta associado ao MAC %MAC% no servidor %PXEServer%"
		echo "Startup.nsh - Invocando NS.py para validar o numero de serie"
	else
		echo "Startup.nsh - Nao existe um NS associado ao MAC %MAC% no servidor %PXEServer%"
		echo "Startup.nsh - Invocando NS.py para capturar o numero de serie"
	endif
	
:NS
	%PYTHON% NS.PY %NSdoMAC%
	set -d NSdoMAC
	
	if %lasterror% ne 0 then
		color red
		echo "Startup.nsh - ERRO!"
		echo "Startup.nsh - Erro ao invocar o %PYTHON%"
		color
		pause -q
		exit 1
	endif
	
	color yellow
	echo "Startup.nsh - O numero de serie capturado foi %NS% em %LOCATION%"
	color
	if "%NS%" eq "null" then
		color red
		echo "Startup.nsh - O numero de serie capturado esta vazio!"
		echo "Startup.nsh - Vamos tentar denovo."
		color
		goto NS
	endif
	
	# conecta na aplicação HttpDynBootBridge ao serviço de dicionário e associa a NS lida ao MAC address (valor %MAC%_NS)
	# o valor irá expirar em 5 minutos.
	httpget "http://%PXEServer%/HttpDynBootBridge/api/Dictionary/%MAC%_NS?Value=%NS%&ValidadeMinutos=%EXPIRACAO_CACHE_SERVIDOR%" "var:HTTP_RES"
	if %lasterror% eq 0 then
	    color yellow
		echo "Startup.nsh - NS %NS% associado ao %MAC% em %PXEServer%."
		echo "Startup.nsh - Associacao sera valida por %EXPIRACAO_CACHE_SERVIDOR% minutos."
		color
	endif

	# copia o resolv.conf correto conforme a localidade com os IPs dos servidores de dns
	echo "Startup.nsh - Configurando arquivo %Drive%:\EFI\StdLib\etc\resolv.conf"
	if exists %Drive%:\EFI\StdLib\etc\resolv.conf then
		del %Drive%:\EFI\StdLib\etc\resolv.conf
	endif
	echo "Startup.nsh - Copiando %Drive%:\EFI\Tools\resolv%LOCATION%.conf"
	copy %Drive%:\EFI\Tools\resolv%LOCATION%.conf %Drive%:\EFI\StdLib\etc\resolv.conf
	
    # Invoca python para fazer download do arquivo zip com a BIOS do servidor PXE via HTTP
	echo "Startup.nsh - Invocando DownloadBIOS.py para fazer o download da BIOS"
	%PYTHON% DownloadBIOS.py %NS% %PXEServer% %Drive_BIOS%:\
	if %lasterror% ne 0 then
		color red
		echo "Startup.nsh - ERRO!"
		echo "Startup.nsh - Nao consegui baixar o arquivo de BIOS via rede!"
		color
		pause -q
		exit 1
    endif
	
	# Executa script gerado por NetworkBIOS.py com a data/hora obtida do servidor dynboot
	color green
	echo "Startup.nsh - Atualizando a hora pela rede... netclock.nsh..."
	%Drive_BIOS%:\netclock.nsh
	echo "Startup.nsh - Atualizando a hora pela rede... netclock.nsh... OK!"
	color

else
	echo "Startup.nsh - Processo via rede ? NAO"
	echo "Startup.nsh - Vou descompactar os arquivos .zip na ramdrive."
	for %x in %Drive%:\zip\*.zip
		echo "Startup.nsh - Extraindo [%x] para a ramdrive"
		%PYTHON% extract.py %x %Drive_BIOS%:\
		if %lasterror% ne 0 then
			color red
			echo "Startup.nsh - ERRO!"
			echo "Startup.nsh - Erro ao extrair o arquivo zip: %x"
			color
			pause -q
			exit 1
		endif
		color yellow
		echo "Startup.nsh - [%x] para a ramdrive -> OK!"
		color
	endfor
endif

%Drive_BIOS%:
color yellow
echo "Startup.nsh - O Script Startup.nsh acabou."
echo "Startup.nsh - Vamos para o script Start.nsh."
color
Start.nsh